要到IP之後,就可以用手機透過網路控制Amebaz2。先用最陽春的http就好...
httpd範例SDK早就寫好了,打開開關即可。
檔案: project/realtek_amebaz2_v0_example/inc/platform_opts.h
#define CONFIG_EXAMPLE_HTTPD 1 // 0改成1
燒完firmware重開機,手機就可以連到板子的陽春網頁(沒錯,連網頁都寫好了)。
因為我要透過http POST來控制LED,所以先把GPIO的code寫在這個檔案 component/common/example/httpd/example_httpd.c
// 在global區域加上以下幾行
#include "gpio_api.h"
// Ref. ambz2_sdk/project/realtek_amebaz2_v0_example/example_sources/gpio_light_weight/scr/main.c
#define GPIO_LED_PIN PA_23 // LED 一腳插A23,一腳插GND
extern void gpio_direct_write(gpio_t *obj, BOOL value);
gpio_t gpio_led;
// http POST之後執行的function
void homepage_cb(struct httpd_conn *conn)
{
// 中間略
if(body) {
// read HTTP body
memset(body, 0, content_len + 1);
read_size = httpd_request_read_data(conn, body, content_len);
// 中間略
// LED
// 根據陽春SDK網頁,body就是POST收下來的資料,內容會是text1=XXX&text2=XXX,因為我懶得做字串切割(之後再做),就先抓最後一個char就好
if (body[strlen((char const*)body)-1] == '1') {
gpio_direct_write(&gpio_led, 1);
printf("[HANA] LED on\n");
}
else if (body[strlen((char const*)body)-1] == '0') {
gpio_direct_write(&gpio_led, 0);
printf("[HANA] LED off\n");
// 入口點
static void example_httpd_thread(void *param)
{
// 中間略
// 初始 LED control pin
gpio_init(&gpio_led, GPIO_LED_PIN);
gpio_dir(&gpio_led, PIN_OUTPUT); // direction
gpio_mode(&gpio_led, PullNone); // No pull
拿起手機,打開網頁,Text1隨便輸入,只要確保Text2的最後一char是1就好
之後手機返回POST訊息,板子上LED燈也亮了!
關燈只要把Text2的最後一char改0就好了,很迅速喔。